package web.suzy.oj.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import web.suzy.oj.pojo.entity.user.UserRecord;
import web.suzy.oj.pojo.vo.ACMRankVO;
import web.suzy.oj.pojo.vo.OIRankVO;
import web.suzy.oj.pojo.vo.UserHomeVO;

import java.util.List;

/**
 * YangSuzy 软件工作室
 * 类名: UserRecordMapper
 * 描述: ---- 待定 -----
 * 功能: ---- 待定 -----
 *
 * @author YangSuzy
 * Date: 2022/11/23 13:00
 */
@Mapper
@Repository
public interface UserRecordMapper extends BaseMapper<UserRecord> {
    /**
     * 方法名: getACMRankList
     * 描述: 获取ACM排行榜数据
     *
     * @param page    分页对象
     * @param uidList 用户ID列表
     * @return com.baomidou.mybatisplus.core.metadata.IPage<web.suzy.oj.pojo.vo.ACMRankVO>
     * @date 2022/11/23 13:02
     * @auther YangSuzy
     **/
    IPage<ACMRankVO> getACMRankList(Page<ACMRankVO> page, @Param("uidList") List<String> uidList);

    /**
     * 方法名: getRecent7ACRank
     * 描述: 获取最近 7 天通过数排行前 10 名的数据
     *
     * @return java.util.List<web.suzy.oj.pojo.vo.ACMRankVO>
     * @date 2022/11/23 13:12
     * @auther YangSuzy
     **/
    List<ACMRankVO> getRecent7ACRank();

    /**
     * 方法名: getOIRankList
     * 描述: 获取OI排行榜数据
     *
     * @param page    分页对象
     * @param uidList 用户ID列表
     * @return com.baomidou.mybatisplus.core.metadata.IPage<OIRankVO>
     * @date 2022/11/23 13:18
     * @auther YangSuzy
     **/
    IPage<OIRankVO> getOIRankList(Page<OIRankVO> page, @Param("uidList") List<String> uidList);

    /**
     * 方法名: getUserHomeInfo
     * 描述: 获取用户主页信息
     *
     * @param uid      用户ID
     * @param username 用户名
     * @return web.suzy.oj.pojo.vo.UserHomeVO
     * @date 2022/11/23 13:28
     * @auther YangSuzy
     **/
    UserHomeVO getUserHomeInfo(@Param("uid") String uid, @Param("username") String username);
}
